import { _decorator, Component, Layers, Node, resources, Sprite, SpriteFrame, UITransform } from 'cc'
import { TileMgr } from './TileMgr'
import { createUiNode, randomTileRange } from '../utils'
import DataMgr from '../runtime/DataMgr'
import ResourceMgr from '../runtime/ResourceMgr'
const { ccclass, property } = _decorator
/** 瓦片地图生成逻辑 */

@ccclass('TileMapMgr')
export class TileMapMgr extends Component {
  start() {}

  async init() {
    const mapInfo = DataMgr.Instance.mapInfo // 获取地图信息，由中间的一个类来统筹管理对应信息
    const tileInfo = DataMgr.Instance.tileInfo // 收集瓦片集合信息，由中间的一个类来统筹管理对应信息
    const spriteFrames = await ResourceMgr.Instance.loadSpriteFrame('texture/tile/tile')
    console.log('瓦片地图本地资源:', mapInfo)

    // 遍历地图数组(二维数组)
    for (let i = 0; i < mapInfo.length; i++) {
      const column = mapInfo[i]
      tileInfo[i] = [] // 创建列
      for (let j = 0; j < column.length; j++) {
        const tile = column[j]
        // 为空跳过
        if (tile.src === null || tile.type === null) {
          continue
        }

        const tileNode = createUiNode() // 创建一个节点
        // 随机取值
        let number = tile.src
        if ((number === 1 || number === 5 || number === 9) && j % 2 === 0 && i % 2 === 0) {
          number += randomTileRange(0, 3)
        }
        const tileName = `tile (${number})` // 当前瓦片地图本地资源的名称
        const spriteFrame = spriteFrames.find(item => item.name === tileName) // 获取对应的精灵帧
        const tileMgr = tileNode.addComponent(TileMgr)
        const tileType = tile.type // 瓦片类型
        tileMgr.init(tileType, spriteFrame, i, j)
        tileInfo[i][j] = tileMgr // 保存瓦片信息,里面有人物是否能在当前瓦片移动或旋转的信息
        tileNode.setParent(this.node) // 添加到场景中
      }
    }
  }
}
